package com.ruoyi.business.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.business.domain.ExperimentProject;
import com.ruoyi.business.param.LabCountXmlParam;
import com.ruoyi.business.vo.ExperimentProjectExportVo;
import com.ruoyi.business.vo.LabCountXmlVo;
import com.ruoyi.business.vo.LabInfoVo;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * 实验项目管理Mapper接口
 * 
 * @author qiancheng
 * @date 2025-06-13
 */
@Mapper
public interface ExperimentProjectMapper extends BaseMapper<ExperimentProject>
{
    /**
     * 查询实验项目管理
     * 
     * @param id 实验项目管理主键
     * @return 实验项目管理
     */
    public ExperimentProject selectExperimentProjectById(Long id);

    /**
     * 查询实验项目管理列表
     * 
     * @param experimentProject 实验项目管理
     * @return 实验项目管理集合
     */
    public List<ExperimentProject> selectExperimentProjectList(ExperimentProject experimentProject);

    /**
     * 导出实验项目管理列表
     *
     * @param experimentProject 实验项目管理
     * @return 实验项目管理集合
     */
    public List<ExperimentProjectExportVo> ExportExperimentProjectList(ExperimentProject experimentProject);

    /**
     * 新增实验项目管理
     * 
     * @param experimentProject 实验项目管理
     * @return 结果
     */
    public int insertExperimentProject(ExperimentProject experimentProject);

    /**
     * 修改实验项目管理
     * 
     * @param experimentProject 实验项目管理
     * @return 结果
     */
    public int updateExperimentProject(ExperimentProject experimentProject);

    /**
     * 删除实验项目管理
     * 
     * @param id 实验项目管理主键
     * @return 结果
     */
    public int deleteExperimentProjectById(Long id);

    /**
     * 批量删除实验项目管理
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteExperimentProjectByIds(Long[] ids);

    /**
     * 实验平台管理->>实验项目管理->>更多->>根据年月查询实验次数
     * @param labCountXmlParam
     * @return
     */
    public List<LabCountXmlVo> getCountByDate(LabCountXmlParam labCountXmlParam);

    /**
     * 实验平台管理->>实验项目管理->>更多->>根据周查询实验次数
     * @param labCountXmlParam
     * @return
     */
    public List<LabCountXmlVo> getCountByWeek(LabCountXmlParam labCountXmlParam);

    /**
     * 首页->>实验次数->>根据年月查询实验平台的实验次数
     * @param experimentProject
     * @return
     */
    public List<LabInfoVo> getCountByLab(ExperimentProject experimentProject);


    /**
     * 实验平台管理->>实验项目管理->>更多->>根据年月周查询实验项目列表
     * @param labCountXmlParam
     * @return
     */
    public List<ExperimentProject> selectExProjectListByWeek(LabCountXmlParam labCountXmlParam);

    /**
     * 实验平台管理->>实验项目管理->>更多->>导出数据->>导出年月周查询实验项目列表
     * @param labCountXmlParam
     * @return
     */
    public List<ExperimentProjectExportVo> ExportExProjectListByWeek(LabCountXmlParam labCountXmlParam);

    /**
     * 根据实验平台ID查询实验项目列表
     * @param experimentProject 实验平台
     * @return 实验项目集合
     */
    List<ExperimentProject> selectProjectsByLabId(ExperimentProject experimentProject);
}
